package demo2;

import demo1.TestDemo1;

public class Test extends TestDemo1 {//必须是子类，才能访问，否则无法访问
    public void func(){
        //TestDemo1 testDemo1 = new TestDemo1();
        //System.out.println(testDemo1.a);//这么做不能直接访问父类的a
        System.out.println(super.a);
    }
    public static void main(String[] args) {
        Test test = new Test();
        test.func();//为什么不把super放在main方法中，因为super与this一样，都不能放在静态方法中。
    }
    //注意：父类中private成员变量虽然在子类中不能直接访问，但是也继承到子类中了
    /**
     * 什么时候下用哪一种呢?
     * 我们希望类要尽量做到 "封装", 即隐藏内部实现细节, 只暴露出 必要 的信息给类的调用者.
     * 因此我们在使用的时候应该尽可能的使用 比较严格 的访问权限. 例如如果一个方法能用 private, 就尽量不要
     * 用 public.
     * 另外, 还有一种 简单粗暴 的做法: 将所有的字段设为 private, 将所有的方法设为 public. 不过这种方式属于是
     * 对访问权限的滥用, 还是更希望同学们能写代码的时候认真思考, 该类提供的字段方法到底给 "谁" 使用(是类内
     * 部自己用, 还是类的调用者使用, 还是子类使用).
     */

}
